home *** CD-ROM | disk | FTP | other *** search
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Rectangle;
- import java.util.Date;
-
- class zmazescr extends Thread {
- private static final int NUM_COLORS = 16;
- private static final int TOP_COLOR = 12;
- private static final int RECTANGLE_SE_NW_COLOR = 10;
- private static final int TRIANGLE_SSE_NNW_COLOR = 9;
- private static final int TRIANGLE_SE_NW_COLOR = 8;
- private static final int RECTANGLE_W_E_COLOR = 7;
- private static final int FLOOR_COLOR = 6;
- private static final int TRIANGLE_SW_NE_COLOR = 5;
- private static final int RECTANGLE_SW_NE_COLOR = 4;
- private static final int TRIANGLE_SSW_NNE_COLOR = 3;
- private static final int BACKOUT_COLOR = 13;
- private static final int ADVANCE_COLOR = 14;
- private static final int SOLUTION_COLOR = 15;
- private static final double RELATIVE_WIDTH_OF_WALL = (double)0.25F;
- private static final double RELATIVE_HEIGHT_OF_WALL = (double)2.0F;
- private static final double MIN_WALL_LENGTH_IN_INCHES = (double)0.25F;
- private static final double SECONDS_FOR_MAZE_SELECTION = (double)0.25F;
- private static final int[] SUBSTITUTION_HIGH = new int[]{4, 1, 2, 8, 8, 9, 9, 6, 5, 7, 2, 1, 2, 9, 8, 8, 6, 3, 5, 1, 9, 5, 4, 4, 9, 8, 6, 0, 8, 0, 6, 0, 2, 4, 1, 9, 2, 0, 7, 4, 7, 3, 0, 0, 2, 6, 8, 9, 4, 0, 8, 3, 2, 3, 2, 5, 2, 4, 6, 9, 7, 9, 1, 3, 5, 7, 1, 1, 4, 5, 8, 1, 6, 0, 5, 7, 8, 2, 3, 3, 7, 3, 5, 1, 7, 5, 4, 0, 3, 6, 3, 7, 7, 1, 9, 4, 0, 5, 6, 6};
- private static final int[] SUBSTITUTION_LOW = new int[]{1, 2, 2, 1, 5, 5, 4, 6, 4, 6, 4, 4, 5, 6, 6, 3, 0, 9, 6, 5, 7, 2, 0, 9, 3, 4, 2, 3, 9, 1, 9, 9, 9, 3, 8, 9, 3, 4, 1, 5, 0, 5, 2, 7, 0, 8, 8, 0, 4, 5, 0, 3, 6, 8, 1, 7, 8, 8, 7, 1, 3, 2, 7, 7, 1, 8, 0, 3, 7, 5, 2, 6, 4, 0, 9, 9, 7, 7, 4, 6, 2, 0, 0, 1, 7, 3, 6, 6, 1, 1, 2, 4, 5, 9, 8, 2, 8, 8, 3, 5};
- private int adjacency;
- public boolean alreadyPainting;
- private zvertex[][] baseRectangle;
- private zvertex[][] baseTriangle;
- private boolean clearUserAttempts;
- private char[][] computerPage;
- private double cosTilt;
- private int counter0;
- private int counter1;
- private int counter2;
- private int counter3;
- private int counter4;
- private int counter5;
- private int counter6;
- private int counter7;
- private Graphics graph;
- private boolean hexagonalRooms;
- private int[][] hexDeltaX;
- private int[][] hexDeltaY;
- private int maxX;
- private int maxY;
- private zmazecan zmazecan;
- private boolean minimized;
- private int numColumns;
- private int numRoomsInMaze;
- private int numRoomsInSolution;
- private int numRows;
- private boolean paint;
- private double pixelsPerX;
- private double pixelsPerZ;
- public zvertex[][] rectangle;
- private Color[] redGreenBlue;
- private double relDistOfUserFromScreen;
- private boolean resize;
- public boolean restart;
- private Rectangle screen;
- private int[] seed;
- private double sinTilt;
- private boolean solutionDisplayed;
- private int[][] sqrDeltaX;
- private int[][] sqrDeltaY;
- private double sqrt3;
- private zstack[] stack;
- public int state;
- private double tilt;
- public boolean userHasSolved;
- private char[][] userPage;
- private int userX;
- private double userXRelative;
- private int userY;
- private double userYRelative;
- // $FF: renamed from: x int
- private int field_0;
- private double xMax;
- private double xOffset;
- // $FF: renamed from: y int
- private int field_1;
- private double yMax;
- private int yMod4;
- private double yOffset;
-
- zmazescr(zmazecan var1) {
- ((Thread)this).setDaemon(true);
- this.zmazecan = var1;
- this.restart = false;
- this.hexagonalRooms = this.zmazecan.zmaze3d.hexagonalRooms;
- this.clearUserAttempts = true;
- this.state = 5;
- this.baseRectangle = new zvertex[6][4];
-
- for(int var10 = 0; var10 < 6; ++var10) {
- for(int var12 = 0; var12 < 4; ++var12) {
- this.baseRectangle[var10][var12] = new zvertex();
- }
- }
-
- this.rectangle = new zvertex[6][4];
-
- for(int var18 = 0; var18 < 6; ++var18) {
- for(int var20 = 0; var20 < 4; ++var20) {
- this.rectangle[var18][var20] = new zvertex();
- }
- }
-
- this.baseTriangle = new zvertex[4][3];
-
- for(int var19 = 0; var19 < 4; ++var19) {
- for(int var21 = 0; var21 < 3; ++var21) {
- this.baseTriangle[var19][var21] = new zvertex();
- }
- }
-
- this.hexDeltaX = new int[6][720];
- this.hexDeltaY = new int[6][720];
- this.sqrDeltaX = new int[4][24];
- this.sqrDeltaY = new int[4][24];
- this.redGreenBlue = new Color[16];
- this.computerPage = null;
- this.userPage = null;
- this.stack = null;
- this.alreadyPainting = false;
- this.solutionDisplayed = false;
- this.userHasSolved = false;
- this.minimized = false;
- this.hexDeltaY[0][0] = -1;
- this.hexDeltaX[0][0] = -2;
- this.hexDeltaY[1][0] = 1;
- this.hexDeltaX[1][0] = -2;
- this.hexDeltaY[2][0] = -2;
- this.hexDeltaX[2][0] = 0;
- this.hexDeltaY[3][0] = 2;
- this.hexDeltaX[3][0] = 0;
- this.hexDeltaY[4][0] = -1;
- this.hexDeltaX[4][0] = 2;
- this.hexDeltaY[5][0] = 1;
- this.hexDeltaX[5][0] = 2;
- int var9 = 0;
-
- for(int var3 = 0; var3 < 6; ++var3) {
- for(int var4 = 0; var4 < 6; ++var4) {
- if (var3 != var4) {
- for(int var5 = 0; var5 < 6; ++var5) {
- if (var3 != var5 && var4 != var5) {
- for(int var6 = 0; var6 < 6; ++var6) {
- if (var3 != var6 && var4 != var6 && var5 != var6) {
- for(int var7 = 0; var7 < 6; ++var7) {
- if (var3 != var7 && var4 != var7 && var5 != var7 && var6 != var7) {
- for(int var8 = 0; var8 < 6; ++var8) {
- if (var3 != var8 && var4 != var8 && var5 != var8 && var6 != var8 && var7 != var8) {
- this.hexDeltaX[var3][var9] = this.hexDeltaX[0][0];
- this.hexDeltaY[var3][var9] = this.hexDeltaY[0][0];
- this.hexDeltaX[var4][var9] = this.hexDeltaX[1][0];
- this.hexDeltaY[var4][var9] = this.hexDeltaY[1][0];
- this.hexDeltaX[var5][var9] = this.hexDeltaX[2][0];
- this.hexDeltaY[var5][var9] = this.hexDeltaY[2][0];
- this.hexDeltaX[var6][var9] = this.hexDeltaX[3][0];
- this.hexDeltaY[var6][var9] = this.hexDeltaY[3][0];
- this.hexDeltaX[var7][var9] = this.hexDeltaX[4][0];
- this.hexDeltaY[var7][var9] = this.hexDeltaY[4][0];
- this.hexDeltaX[var8][var9] = this.hexDeltaX[5][0];
- this.hexDeltaY[var8][var9++] = this.hexDeltaY[5][0];
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- this.sqrDeltaY[0][0] = 0;
- this.sqrDeltaX[0][0] = -1;
- this.sqrDeltaY[1][0] = 1;
- this.sqrDeltaX[1][0] = 0;
- this.sqrDeltaY[2][0] = 0;
- this.sqrDeltaX[2][0] = 1;
- this.sqrDeltaY[3][0] = -1;
- this.sqrDeltaX[3][0] = 0;
- var9 = 0;
-
- for(int var13 = 0; var13 < 4; ++var13) {
- for(int var14 = 0; var14 < 4; ++var14) {
- if (var13 != var14) {
- for(int var15 = 0; var15 < 4; ++var15) {
- if (var13 != var15 && var14 != var15) {
- for(int var16 = 0; var16 < 4; ++var16) {
- if (var13 != var16 && var14 != var16 && var15 != var16) {
- this.sqrDeltaX[var13][var9] = this.sqrDeltaX[0][0];
- this.sqrDeltaY[var13][var9] = this.sqrDeltaY[0][0];
- this.sqrDeltaX[var14][var9] = this.sqrDeltaX[1][0];
- this.sqrDeltaY[var14][var9] = this.sqrDeltaY[1][0];
- this.sqrDeltaX[var15][var9] = this.sqrDeltaX[2][0];
- this.sqrDeltaY[var15][var9] = this.sqrDeltaY[2][0];
- this.sqrDeltaX[var16][var9] = this.sqrDeltaX[3][0];
- this.sqrDeltaY[var16][var9++] = this.sqrDeltaY[3][0];
- }
- }
- }
- }
- }
- }
- }
-
- this.sqrt3 = Math.sqrt((double)3.0F);
-
- for(int var2 = 0; var2 <= 12; ++var2) {
- int var11 = 256 * var2 / 13;
- this.redGreenBlue[var2] = new Color(var11, var11, var11);
- }
-
- this.redGreenBlue[13] = new Color(255, 255, 0);
- this.redGreenBlue[14] = new Color(0, 255, 0);
- this.redGreenBlue[15] = new Color(255, 0, 0);
- }
-
- private void drawQuadrilateral(zpoint[] var1, int var2) {
- int[] var4 = new int[4];
- int[] var5 = new int[4];
-
- for(int var3 = 0; var3 < 4; ++var3) {
- var4[var3] = var1[var3].x;
- var5[var3] = var1[var3].y;
- }
-
- this.graph.setColor(this.redGreenBlue[var2]);
- this.graph.fillPolygon(var4, var5, 4);
- }
-
- private zpoint getCorner(double var1, double var3, double var5) {
- double var10 = (this.yMax - var3) * this.cosTilt - var5 * this.sinTilt;
- double var14 = (this.yMax - var3) * this.sinTilt + var5 * this.cosTilt;
- double var12 = this.yMax / (double)2.0F + this.relDistOfUserFromScreen * (var14 - this.yMax / (double)2.0F) / (var10 + this.relDistOfUserFromScreen);
- double var8 = this.xMax / (double)2.0F + this.relDistOfUserFromScreen * (var1 - this.xMax / (double)2.0F) / (var10 + this.relDistOfUserFromScreen);
- var8 += this.xOffset;
- zpoint var7 = new zpoint();
- var7.x = (int)(this.pixelsPerX * var8);
- var7.y = this.screen.height - (int)(this.pixelsPerZ * var12);
- return var7;
- }
-
- private void displayQuadrilateral(double var1, double var3, double var5, double var7, double var9, double var11, double var13, double var15, double var17, double var19, double var21, double var23, int var25) {
- zpoint[] var26 = new zpoint[]{this.getCorner(var1, var3, var5), this.getCorner(var7, var9, var11), this.getCorner(var13, var15, var17), this.getCorner(var19, var21, var23)};
- this.drawQuadrilateral(var26, var25);
- }
-
- private void drawTriangle(zpoint[] var1, int var2) {
- int[] var4 = new int[3];
- int[] var5 = new int[3];
-
- for(int var3 = 0; var3 < 3; ++var3) {
- var4[var3] = var1[var3].x;
- var5[var3] = var1[var3].y;
- }
-
- this.graph.setColor(this.redGreenBlue[var2]);
- this.graph.fillPolygon(var4, var5, 3);
- }
-
- private void displayTriangle(double var1, double var3, double var5, double var7, double var9, double var11, double var13, double var15, double var17, int var19) {
- zpoint[] var20 = new zpoint[]{this.getCorner(var1, var3, var5), this.getCorner(var7, var9, var11), this.getCorner(var13, var15, var17)};
- this.drawTriangle(var20, var19);
- }
-
- private void outputTriangle(zvertex[] var1, boolean var2, int var3) {
- if (var2) {
- if (var1[1].x < this.xMax / (double)2.0F && var1[1].x > var1[0].x) {
- double var4 = var1[2].x;
- double var12 = var1[2].y;
- double var6 = var1[1].x;
- double var14 = var1[1].y;
- double var8 = var1[1].x;
- double var16 = var1[1].y;
- double var10 = var1[2].x;
- double var18 = var1[2].y;
- this.displayQuadrilateral(var4, var12, (double)2.0F, var6, var14, (double)2.0F, var8, var16, (double)0.0F, var10, var18, (double)0.0F, 3);
- }
-
- if (var1[1].x > this.xMax / (double)2.0F && var1[1].x < var1[2].x) {
- double var20 = var1[1].x;
- double var31 = var1[1].y;
- double var23 = var1[0].x;
- double var34 = var1[0].y;
- double var26 = var1[0].x;
- double var37 = var1[0].y;
- double var29 = var1[1].x;
- double var40 = var1[1].y;
- this.displayQuadrilateral(var20, var31, (double)2.0F, var23, var34, (double)2.0F, var26, var37, (double)0.0F, var29, var40, (double)0.0F, 9);
- return;
- }
- } else {
- double var21 = var1[0].x;
- double var32 = var1[0].y;
- double var24 = var1[2].x;
- double var35 = var1[2].y;
- double var27 = var1[2].x;
- double var38 = var1[2].y;
- double var30 = var1[0].x;
- double var41 = var1[0].y;
- this.displayQuadrilateral(var21, var32, (double)2.0F, var24, var35, (double)2.0F, var27, var38, (double)0.0F, var30, var41, (double)0.0F, var3);
- var21 = var1[0].x;
- var32 = var1[0].y;
- var24 = var1[1].x;
- var35 = var1[1].y;
- var27 = var1[2].x;
- var38 = var1[2].y;
- this.displayTriangle(var21, var32, (double)2.0F, var24, var35, (double)2.0F, var27, var38, (double)2.0F, 12);
- }
-
- }
-
- private void outputRectangle(zvertex[] var1, int var2) {
- double var3 = var1[3].x;
- double var11 = var1[3].y;
- double var5 = var1[2].x;
- double var13 = var1[2].y;
- double var7 = var1[2].x;
- double var15 = var1[2].y;
- double var9 = var1[3].x;
- double var17 = var1[3].y;
- this.displayQuadrilateral(var3, var11, (double)2.0F, var5, var13, (double)2.0F, var7, var15, (double)0.0F, var9, var17, (double)0.0F, var2);
- var3 = var1[0].x;
- var11 = var1[0].y;
- var5 = var1[1].x;
- var13 = var1[1].y;
- var7 = var1[2].x;
- var15 = var1[2].y;
- var9 = var1[3].x;
- var17 = var1[3].y;
- this.displayQuadrilateral(var3, var11, (double)2.0F, var5, var13, (double)2.0F, var7, var15, (double)2.0F, var9, var17, (double)2.0F, 12);
- }
-
- private void outputLeftRight(zvertex[] var1) {
- if ((double)2.0F * var1[0].x > this.xMax) {
- double var2 = var1[0].x;
- double var10 = var1[0].y;
- double var4 = var1[3].x;
- double var12 = var1[3].y;
- double var6 = var1[3].x;
- double var14 = var1[3].y;
- double var8 = var1[0].x;
- double var16 = var1[0].y;
- this.displayQuadrilateral(var2, var10, (double)2.0F, var4, var12, (double)2.0F, var6, var14, (double)0.0F, var8, var16, (double)0.0F, 10);
- }
-
- if ((double)2.0F * var1[1].x < this.xMax) {
- double var18 = var1[2].x;
- double var22 = var1[2].y;
- double var19 = var1[1].x;
- double var23 = var1[1].y;
- double var20 = var1[1].x;
- double var24 = var1[1].y;
- double var21 = var1[2].x;
- double var25 = var1[2].y;
- this.displayQuadrilateral(var18, var22, (double)2.0F, var19, var23, (double)2.0F, var20, var24, (double)0.0F, var21, var25, (double)0.0F, 4);
- }
-
- }
-
- private void drawLine(double var1, double var3, double var5, double var7) {
- zpoint var13 = this.getCorner(var1, var3, (double)2.0F);
- int var9 = var13.x;
- int var11 = var13.y;
- var13 = this.getCorner(var5, var7, (double)2.0F);
- int var10 = var13.x;
- int var12 = var13.y;
- this.graph.drawLine(var9, var11, var10, var12);
- }
-
- private void hash() {
- int var2 = this.counter0;
- int var3 = this.counter1;
- int var4 = this.counter2;
- int var5 = this.counter3;
- int var6 = this.counter4;
- int var7 = this.counter5;
- int var8 = this.counter6;
- int var9 = this.counter7;
-
- for(int var1 = 8; var1 > 0; --var1) {
- int var10 = 10 * var3 + var2;
- int var11 = SUBSTITUTION_LOW[var10];
- int var12 = SUBSTITUTION_HIGH[var10];
- var10 = 10 * var5 + var4;
- var2 = SUBSTITUTION_LOW[var10];
- int var13 = SUBSTITUTION_HIGH[var10];
- var10 = 10 * var7 + var6;
- var4 = SUBSTITUTION_LOW[var10];
- var3 = SUBSTITUTION_HIGH[var10];
- var10 = 10 * var9 + var8;
- var7 = SUBSTITUTION_LOW[var10];
- var9 = SUBSTITUTION_HIGH[var10];
- var5 = var11;
- var8 = var12;
- var6 = var13;
- }
-
- this.counter0 = var2;
- this.counter1 = var3;
- this.counter2 = var4;
- this.counter3 = var5;
- this.counter4 = var6;
- this.counter5 = var7;
- this.counter6 = var8;
- this.counter7 = var9;
- }
-
- private void increment() {
- int var1 = this.counter0 + 1;
- if (var1 <= 9) {
- this.counter0 = var1;
- } else {
- this.counter0 = 0;
- var1 = this.counter1 + 1;
- if (var1 <= 9) {
- this.counter1 = var1;
- } else {
- this.counter1 = 0;
- var1 = this.counter2 + 1;
- if (var1 <= 9) {
- this.counter2 = var1;
- } else {
- this.counter2 = 0;
- var1 = this.counter3 + 1;
- if (var1 <= 9) {
- this.counter3 = var1;
- } else {
- this.counter3 = 0;
- var1 = this.counter4 + 1;
- if (var1 <= 9) {
- this.counter4 = var1;
- } else {
- this.counter4 = 0;
- var1 = this.counter5 + 1;
- if (var1 <= 9) {
- this.counter5 = var1;
- } else {
- this.counter5 = 0;
- var1 = this.counter6 + 1;
- if (var1 <= 9) {
- this.counter6 = var1;
- } else {
- this.counter6 = 0;
- var1 = this.counter7 + 1;
- if (var1 <= 9) {
- this.counter7 = var1;
- } else {
- this.counter7 = 0;
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- public void hexKey(int var1) {
- int var6 = 0;
- double var4 = (double)0.0F;
- double var7 = (double)0.0F;
- boolean var2 = true;
- int var3 = this.userX + this.hexDeltaX[var1][0];
- if (var3 <= 0) {
- var2 = false;
- } else if (var3 >= this.maxX) {
- var2 = false;
- } else {
- var6 = this.userY + this.hexDeltaY[var1][0];
- }
-
- if (var6 <= 0) {
- var2 = false;
- } else if (var6 > this.maxY) {
- var2 = false;
- } else if (this.userPage[var6][var3] == 0) {
- var2 = false;
- }
-
- if (var2) {
- var3 += this.hexDeltaX[var1][0];
- var6 += this.hexDeltaY[var1][0];
- if (var6 < this.maxY) {
- if (this.userPage[var6][var3] == 1) {
- this.graph.setColor(this.redGreenBlue[13]);
- this.userPage[this.userY][this.userX] = 3;
- } else {
- this.graph.setColor(this.redGreenBlue[14]);
- this.userPage[var6][var3] = 1;
- }
-
- switch (var6 - this.userY) {
- case -4:
- var4 = this.userXRelative;
- var7 = this.userYRelative - this.sqrt3;
- break;
- case -2:
- if (var3 > this.userX) {
- var4 = this.userXRelative + (double)1.5F;
- var7 = this.userYRelative - this.sqrt3 / (double)2.0F;
- } else {
- var4 = this.userXRelative - (double)1.5F;
- var7 = this.userYRelative - this.sqrt3 / (double)2.0F;
- }
- break;
- case 2:
- if (var3 > this.userX) {
- var4 = this.userXRelative + (double)1.5F;
- var7 = this.userYRelative + this.sqrt3 / (double)2.0F;
- } else {
- var4 = this.userXRelative - (double)1.5F;
- var7 = this.userYRelative + this.sqrt3 / (double)2.0F;
- }
- break;
- default:
- var4 = this.userXRelative;
- var7 = this.userYRelative + this.sqrt3;
- }
-
- this.drawLine(this.userXRelative, this.userYRelative, var4, var7);
- } else {
- this.graph.setColor(this.redGreenBlue[14]);
- this.drawLine(this.userXRelative, this.userYRelative, this.userXRelative, this.yMax);
- this.userHasSolved = true;
- }
-
- this.userX = var3;
- this.userY = var6;
- this.userXRelative = var4;
- this.userYRelative = var7;
- }
-
- }
-
- public void hexDisplayUserMoves() {
- double var6 = (double)0.0F;
- int var10 = 2;
- double var13 = this.sqrt3 / (double)2.0F;
-
- for(boolean var2 = false; var10 < this.maxY; var10 += 2) {
- int var3;
- if (var2) {
- var3 = 7;
- var6 = (double)2.5F;
- } else {
- var3 = 3;
- var6 = (double)1.0F;
- }
-
- while(var3 < this.maxX) {
- if (this.userPage[var10][var3] == 1 || this.userPage[var10][var3] == 3) {
- for(int var1 = 0; var1 < 6; ++var1) {
- int var4 = var3 + this.hexDeltaX[var1][0];
- int var11 = var10 + this.hexDeltaY[var1][0];
- if (this.userPage[var11][var4] != 0) {
- if (var11 == 0) {
- this.graph.setColor(this.redGreenBlue[14]);
- this.drawLine((double)1.0F, (double)0.0F, var6, var13);
- } else if (var11 == this.maxY) {
- if (this.userHasSolved) {
- this.graph.setColor(this.redGreenBlue[14]);
- double var15 = var13 + this.sqrt3 / (double)2.0F;
- this.drawLine(var6, var13, var6, var15);
- }
- } else {
- int var5 = var4 + this.hexDeltaX[var1][0];
- if (var5 > 0 && var5 < this.maxX) {
- int var12 = var11 + this.hexDeltaY[var1][0];
- if (var12 > 0 && var12 < this.maxY && (this.userPage[var12][var5] == 1 || this.userPage[var12][var5] == 3)) {
- if (this.userPage[var10][var3] == this.userPage[var12][var5]) {
- if (this.userPage[var10][var3] == 1) {
- this.graph.setColor(this.redGreenBlue[14]);
- } else {
- this.graph.setColor(this.redGreenBlue[13]);
- }
- } else {
- this.graph.setColor(this.redGreenBlue[13]);
- }
-
- double var8;
- double var17;
- switch (var11 - var10) {
- case -2:
- var8 = var6;
- var17 = var13 - this.sqrt3 / (double)2.0F;
- break;
- case -1:
- if (var4 > var3) {
- var8 = var6 + (double)0.75F;
- var17 = var13 - this.sqrt3 / (double)4.0F;
- } else {
- var8 = var6 - (double)0.75F;
- var17 = var13 - this.sqrt3 / (double)4.0F;
- }
- break;
- case 0:
- default:
- var8 = var6;
- var17 = var13 + this.sqrt3 / (double)2.0F;
- break;
- case 1:
- if (var4 > var3) {
- var8 = var6 + (double)0.75F;
- var17 = var13 + this.sqrt3 / (double)4.0F;
- } else {
- var8 = var6 - (double)0.75F;
- var17 = var13 + this.sqrt3 / (double)4.0F;
- }
- }
-
- this.drawLine(var6, var13, var8, var17);
- }
- }
- }
- }
- }
- }
-
- var6 += (double)3.0F;
- var3 += 8;
- }
-
- var2 = !var2;
- var13 += this.sqrt3 / (double)2.0F;
- }
-
- if (this.userHasSolved) {
- this.graph.setColor(this.redGreenBlue[14]);
- this.drawLine(var6, var13, var6, this.yMax);
- }
-
- }
-
- private void hexSolveMaze() {
- this.numRoomsInSolution = 1;
- this.adjacency = 0;
- int var4 = 3;
- int var6 = 2;
- int var3 = -1;
- this.computerPage[var6][var4] = 1;
- int var7 = 0;
- int var5 = 0;
-
- label98:
- while(true) {
- int var8 = 0;
- boolean var2 = false;
-
- while(true) {
- while(var8 >= 6 || var2) {
- if (!var2) {
- var8 = this.stack[var3].index1;
- this.computerPage[var6][var4] = 2;
- var4 -= this.hexDeltaX[var8][0];
- var6 -= this.hexDeltaY[var8][0];
- this.computerPage[var6][var4] = 2;
- var4 -= this.hexDeltaX[var8][0];
- var6 -= this.hexDeltaY[var8][0];
- --var3;
- ++var8;
- }
-
- if (var2) {
- this.computerPage[var7][var5] = 1;
- var5 += this.hexDeltaX[var8][0];
- var7 += this.hexDeltaY[var8][0];
- if (var7 <= this.maxY) {
- ++var3;
- this.stack[var3].index1 = (short)var8;
- this.computerPage[var7][var5] = 1;
- var4 = var5;
- var6 = var7;
- }
-
- if (var7 >= this.maxY) {
- break label98;
- }
- continue label98;
- }
- }
-
- var5 = var4 + this.hexDeltaX[var8][0];
- var7 = var6 + this.hexDeltaY[var8][0];
- if (this.computerPage[var7][var5] == 2) {
- var2 = true;
- } else {
- ++var8;
- }
- }
- }
-
- var4 = this.maxX - 3;
- var6 = this.maxY - 2;
-
- for(this.adjacency = 0; var3 >= 0; ++this.numRoomsInSolution) {
- for(int var9 = 0; var9 < 6; ++var9) {
- var5 = var4 + this.hexDeltaX[var9][0];
- var7 = var6 + this.hexDeltaY[var9][0];
- if (this.computerPage[var7][var5] != 1 && this.computerPage[var7][var5] == 0) {
- var5 += this.hexDeltaX[var9][0];
- var7 += this.hexDeltaY[var9][0];
- if (var5 < 0) {
- ++this.adjacency;
- } else if (var5 > this.maxX) {
- ++this.adjacency;
- } else if (var7 < 0) {
- ++this.adjacency;
- } else if (var7 > this.maxY) {
- ++this.adjacency;
- } else if (this.computerPage[var7][var5] == 1) {
- ++this.adjacency;
- }
- }
- }
-
- var4 -= 2 * this.hexDeltaX[this.stack[var3].index1][0];
- var6 -= 2 * this.hexDeltaY[this.stack[var3--].index1][0];
- }
-
- for(int var10 = 0; var10 < 6; ++var10) {
- var5 = var4 + this.hexDeltaX[var10][0];
- var7 = var4 + this.hexDeltaY[var10][0];
- if (this.computerPage[var7][var5] != 2 && this.computerPage[var7][var5] == 0) {
- var5 += this.hexDeltaX[var10][0];
- var7 += this.hexDeltaY[var10][0];
- if (var5 < 0) {
- ++this.adjacency;
- } else if (var5 > this.maxX) {
- ++this.adjacency;
- } else if (var7 < 0) {
- ++this.adjacency;
- } else if (var7 > this.maxY) {
- ++this.adjacency;
- } else if (this.computerPage[var7][var5] == 1) {
- ++this.adjacency;
- }
- }
- }
-
- }
-
- private void hexGenerateMaze(int[] var1) {
- int var18 = 0;
- int var15 = 0;
- int[] var6 = new int[]{var1[0] + 1, var1[1] + 1, var1[2] + 1, var1[3] + 1, var1[4] + 1, var1[5] + 1, var1[6] + 1, var1[7] + 1};
- int var17 = 1;
-
- for(int var16 = 0; var16 <= this.maxY; ++var16) {
- if (var17 == 1) {
- int var33 = 1;
-
- for(int var30 = 0; var30 <= this.maxX; ++var30) {
- if ((var33 != 0 || var16 == 0 || var16 == this.maxY) && var33 != 3 && var33 != 4 && var33 != 5) {
- this.computerPage[var16][var30] = 2;
- } else {
- this.computerPage[var16][var30] = 0;
- }
-
- ++var33;
- if (var33 >= 8) {
- var33 = 0;
- }
- }
- } else if (var17 != 0 && var17 != 2) {
- int var32 = 1;
-
- for(int var29 = 0; var29 <= this.maxX; ++var29) {
- if (var32 != 0 && var32 != 1 && var32 != 4 && var32 != 7) {
- this.computerPage[var16][var29] = 2;
- } else {
- this.computerPage[var16][var29] = 0;
- }
-
- ++var32;
- if (var32 >= 8) {
- var32 = 0;
- }
- }
- } else {
- int var14 = 1;
-
- for(int var13 = 0; var13 <= this.maxX; ++var13) {
- if (var14 != 2 && var14 != 6) {
- this.computerPage[var16][var13] = 2;
- } else {
- this.computerPage[var16][var13] = 0;
- }
-
- ++var14;
- if (var14 >= 8) {
- var14 = 0;
- }
- }
- }
-
- ++var17;
- if (var17 >= 4) {
- var17 = 0;
- }
- }
-
- int var2 = var6[0];
- int var7 = 0;
-
- for(int var8 = 1; var8 < 8; var7 = var8++) {
- int var12 = var6[var8];
- var6[var7] = var12;
- var2 += var12;
- if (var2 >= 727) {
- var2 -= 727;
- }
- }
-
- var6[7] = var2;
- var2 %= this.numColumns;
- int var31 = 4 * var2 + 3;
- int var9 = var6[0];
- var7 = 0;
-
- for(int var23 = 1; var23 < 8; var7 = var23++) {
- int var27 = var6[var23];
- var6[var7] = var27;
- var9 += var27;
- if (var9 >= 727) {
- var9 -= 727;
- }
- }
-
- var6[7] = var9;
- int var34;
- if (var2 % 2 == 0) {
- var9 %= this.numRows;
- var34 = 4 * var9 + 2;
- } else {
- var9 %= this.numRows - 1;
- var34 = 4 * var9 + 4;
- }
-
- this.computerPage[var34][var31] = 2;
- int var11 = -1;
-
- do {
- int var20 = 0;
-
- int var4;
- do {
- var4 = var6[0];
- var7 = 0;
-
- for(int var24 = 1; var24 < 8; var7 = var24++) {
- int var28 = var6[var24];
- var6[var7] = var28;
- var4 += var28;
- if (var4 >= 727) {
- var4 -= 727;
- }
- }
-
- var6[7] = var4;
- } while(var4 >= 720);
-
- boolean var5 = false;
-
- for(boolean var10 = false; !var10; var10 = var5 || var11 == -1 && var20 >= 6) {
- while(var20 < 6 && !var5) {
- var15 = var31 + 2 * this.hexDeltaX[var20][var4];
- if (var15 <= 0) {
- ++var20;
- } else if (var15 > this.maxX) {
- ++var20;
- } else {
- var18 = var34 + 2 * this.hexDeltaY[var20][var4];
- if (var18 <= 0) {
- ++var20;
- } else if (var18 > this.maxY) {
- ++var20;
- } else if (this.computerPage[var18][var15] == 0) {
- var5 = true;
- } else {
- ++var20;
- }
- }
- }
-
- if (!var5 && var11 >= 0) {
- var20 = this.stack[var11].index1;
- var4 = this.stack[var11--].index2;
- var31 -= 2 * this.hexDeltaX[var20][var4];
- var34 -= 2 * this.hexDeltaY[var20++][var4];
- }
- }
-
- if (var5) {
- ++var11;
- this.stack[var11].index1 = (short)var20;
- this.stack[var11].index2 = (short)var4;
- this.computerPage[var18][var15] = 2;
- this.computerPage[(var34 + var18) / 2][(var31 + var15) / 2] = 2;
- var31 = var15;
- var34 = var18;
- }
- } while(var11 != -1);
-
- this.computerPage[0][3] = 1;
- this.computerPage[this.maxY][this.maxX - 3] = 2;
- }
-
- private void hexSelectMaze() {
- byte var1 = 0;
- byte var14 = 0;
- int[] var16 = new int[8];
- int[] var17 = new int[8];
- int var2 = this.seed[0];
- int var3 = this.seed[1];
- int var4 = this.seed[2];
- int var5 = this.seed[3];
- int var6 = this.seed[4];
- int var7 = this.seed[5];
- int var8 = this.seed[6];
- int var9 = this.seed[7];
- this.hash();
- int var13 = 4 * this.numRoomsInMaze + 1;
- byte var15 = 0;
- var17[0] = var2;
- var17[1] = var3;
- var17[2] = var4;
- var17[3] = var5;
- var17[4] = var6;
- var17[5] = var7;
- var17[6] = var8;
- var17[7] = var9;
- Date var10 = new Date();
- double var18 = (double)var10.getTime() / (double)1000.0F;
-
- double var11;
- do {
- var16[0] = var2;
- var16[1] = var3;
- var16[2] = var4;
- var16[3] = var5;
- var16[4] = var6;
- var16[5] = var7;
- var16[6] = var8;
- var16[7] = var9;
- this.hexGenerateMaze(var16);
- this.hexSolveMaze();
- if (3 * var14 >= this.numRoomsInMaze) {
- if (var1 < var13) {
- var13 = var1;
- var15 = var14;
- var17[0] = var16[0];
- var17[1] = var16[1];
- var17[2] = var16[2];
- var17[3] = var16[3];
- var17[4] = var16[4];
- var17[5] = var16[5];
- var17[6] = var16[6];
- var17[7] = var16[7];
- } else if (var1 == var13 && var14 > var15) {
- var15 = var14;
- var17[0] = var16[0];
- var17[1] = var16[1];
- var17[2] = var16[2];
- var17[3] = var16[3];
- var17[4] = var16[4];
- var17[5] = var16[5];
- var17[6] = var16[6];
- var17[7] = var16[7];
- }
- }
-
- this.increment();
- var10 = new Date();
- var11 = (double)var10.getTime() / (double)1000.0F - var18;
- } while(var11 >= (double)0.0F && var11 < (double)0.25F);
-
- this.hexGenerateMaze(var17);
- this.hexSolveMaze();
- }
-
- public void hexDisplaySolution() {
- double var6 = (double)1.0F;
- double var13 = this.sqrt3 / (double)2.0F;
- double var8 = (double)0.0F;
- double var15 = (double)0.0F;
- this.graph.setColor(this.redGreenBlue[15]);
- this.drawLine((double)1.0F, (double)0.0F, var6, var13);
- int var5 = 3;
- int var12 = -2;
- int var3 = 3;
- int var10 = 2;
- int var4 = 0;
- int var11 = 0;
-
- do {
- boolean var2 = false;
- int var1 = 0;
-
- while(!var2) {
- var4 = var3 + this.hexDeltaX[var1][0];
- var11 = var10 + this.hexDeltaY[var1][0];
- if (this.computerPage[var11][var4] == 1) {
- var4 += this.hexDeltaX[var1][0];
- var11 += this.hexDeltaY[var1][0];
- if (var4 == var5 && var11 == var12) {
- ++var1;
- } else {
- var2 = true;
- }
- } else {
- ++var1;
- }
- }
-
- if (var11 < this.maxY) {
- switch (var11 - var10) {
- case -4:
- var8 = var6;
- var15 = var13 - this.sqrt3;
- break;
- case -2:
- if (var4 > var3) {
- var8 = var6 + (double)1.5F;
- var15 = var13 - this.sqrt3 / (double)2.0F;
- } else {
- var8 = var6 - (double)1.5F;
- var15 = var13 - this.sqrt3 / (double)2.0F;
- }
- break;
- case 2:
- if (var4 > var3) {
- var8 = var6 + (double)1.5F;
- var15 = var13 + this.sqrt3 / (double)2.0F;
- } else {
- var8 = var6 - (double)1.5F;
- var15 = var13 + this.sqrt3 / (double)2.0F;
- }
- break;
- default:
- var8 = var6;
- var15 = var13 + this.sqrt3;
- }
-
- this.drawLine(var6, var13, var8, var15);
- } else {
- this.drawLine(var6, var13, var6, this.yMax);
- }
-
- var5 = var3;
- var12 = var10;
- var3 = var4;
- var10 = var11;
- var6 = var8;
- var13 = var15;
- } while(var11 < this.maxY);
-
- }
-
- private void hexOutputMaze() {
- zvertex[] var14 = new zvertex[4];
-
- for(int var26 = 0; var26 < 4; ++var26) {
- var14[var26] = new zvertex();
- }
-
- zvertex[] var15 = new zvertex[3];
-
- for(int var66 = 0; var66 < 3; ++var66) {
- var15[var66] = new zvertex();
- }
-
- zvertex[][] var25 = new zvertex[4][3];
-
- for(int var6 = 0; var6 < 4; ++var6) {
- for(int var67 = 0; var67 < 3; ++var67) {
- var25[var6][var67] = new zvertex();
- }
- }
-
- switch (this.state) {
- case 0:
- if (this.resize) {
- this.seed = new int[8];
- Date var24 = new Date();
- long var4 = var24.getTime();
-
- for(int var3 = 0; var3 < 8; ++var3) {
- long var7 = var4 / 10L;
- this.seed[var3] = (int)(var4 - 10L * var7);
- var4 = var7;
- }
-
- double var16 = (double)this.screen.width * 0.28;
- double var18 = (double)0.25F;
- var18 *= 25.4;
- double var20 = (double)0.25F;
- this.numColumns = (int)((double)2.0F * (var16 / var18 - (double)2.0F - var20 / this.sqrt3) / (double)3.0F + (double)1.0F);
- if (this.numColumns % 2 == 0) {
- --this.numColumns;
- }
-
- if (this.numColumns < 3) {
- this.numColumns = 3;
- }
-
- var16 = (double)this.screen.height * 0.28;
- var18 = (double)this.screen.width * 0.28;
- var20 = (double)this.numColumns;
- double var22 = (double)0.25F;
- this.numRows = (int)((var16 / var18 * ((double)3.0F * (var20 - (double)1.0F) / (double)2.0F + (double)2.0F + var22 / this.sqrt3) - var22) / this.sqrt3);
- if (this.numRows < 2) {
- this.numRows = 2;
- }
-
- this.maxX = 8 * (this.numColumns / 2) + 6;
- this.maxY = 4 * this.numRows;
- this.numRoomsInMaze = this.numRows * this.numColumns - this.numColumns / 2;
- this.computerPage = new char[this.maxY + 1][this.maxX + 1];
- this.userPage = new char[this.maxY + 1][this.maxX + 1];
- this.clearUserAttempts = true;
- this.stack = new zstack[this.numRoomsInMaze];
-
- for(int var13 = 0; var13 < this.numRoomsInMaze; ++var13) {
- this.stack[var13] = new zstack();
- }
-
- this.hexSelectMaze();
- this.resize = false;
- }
-
- if (this.clearUserAttempts) {
- for(this.userX = 0; this.userX <= this.maxX; ++this.userX) {
- for(this.userY = 0; this.userY <= this.maxY; ++this.userY) {
- if (this.computerPage[this.userY][this.userX] == 0) {
- this.userPage[this.userY][this.userX] = 0;
- } else {
- this.userPage[this.userY][this.userX] = 2;
- }
- }
- }
-
- this.userX = 3;
- this.userXRelative = (double)1.0F;
- this.userY = 2;
- this.userYRelative = this.sqrt3 / (double)2.0F;
- this.userPage[this.userY][this.userX] = 1;
- this.clearUserAttempts = false;
- }
-
- if (this.paint) {
- int[] var1 = new int[4];
- int[] var2 = new int[4];
- var1[0] = 0;
- var2[0] = 0;
- var1[1] = 0;
- var2[1] = this.screen.height;
- var1[2] = this.screen.width;
- var2[2] = this.screen.height;
- var1[3] = this.screen.width;
- var2[3] = 0;
- this.graph.setColor(new Color(255, 255, 255));
- this.graph.fillPolygon(var1, var2, 4);
- double var11 = Math.atan((double)1.0F) / (double)45.0F;
- double var9 = this.tilt * var11;
- this.sinTilt = Math.sin(var9);
- this.cosTilt = Math.cos(var9);
- double var59 = (double)this.numColumns;
- this.xMax = (double)3.0F * (var59 - (double)1.0F) / (double)2.0F + (double)2.0F + (double)0.25F / this.sqrt3;
- var59 = (double)this.screen.width;
- this.pixelsPerX = (var59 - (double)1.0F) / (this.xMax * (this.xMax / (this.xMax - (double)2.0F)));
- this.xOffset = this.xMax / (double)2.0F * ((double)2.0F / (this.xMax - (double)2.0F));
- var59 = (double)this.numRows;
- this.yMax = var59 * this.sqrt3 + (double)0.25F;
- var59 = (double)this.screen.height;
- this.pixelsPerZ = (var59 - (double)1.0F) / Math.sqrt(this.yMax * this.yMax + (double)4.0F);
- if (this.yMax > this.xMax) {
- this.relDistOfUserFromScreen = this.yMax;
- } else {
- this.relDistOfUserFromScreen = this.xMax;
- }
-
- this.paint = false;
- }
-
- if (this.state == 0) {
- this.state = 1;
- return;
- }
- break;
- case 1:
- this.baseTriangle[0][0].x = (double)0.0F;
- this.baseTriangle[0][0].y = (double)0.25F + this.sqrt3 / (double)2.0F;
- this.baseTriangle[0][1].x = (double)0.0F;
- this.baseTriangle[0][1].y = this.sqrt3 / (double)2.0F;
- this.baseTriangle[0][2].x = (double)0.25F * this.sqrt3 / (double)2.0F;
- this.baseTriangle[0][2].y = ((double)0.25F + this.sqrt3) / (double)2.0F;
- this.baseTriangle[1][0].x = ((double)1.0F - (double)0.25F / this.sqrt3) / (double)2.0F;
- this.baseTriangle[1][0].y = (double)0.125F;
- this.baseTriangle[1][1].x = (double)0.5F + (double)0.25F / this.sqrt3;
- this.baseTriangle[1][1].y = (double)0.0F;
- this.baseTriangle[1][2].x = this.baseTriangle[1][1].x;
- this.baseTriangle[1][2].y = (double)0.25F;
- this.baseTriangle[2][0].x = (double)1.5F;
- this.baseTriangle[2][0].y = (double)0.25F;
- this.baseTriangle[2][1].x = (double)1.5F;
- this.baseTriangle[2][1].y = (double)0.0F;
- this.baseTriangle[2][2].x = (double)1.5F * ((double)1.0F + (double)0.25F / this.sqrt3);
- this.baseTriangle[2][2].y = (double)0.125F;
- this.baseTriangle[3][0].x = (double)2.0F - (double)0.25F / ((double)2.0F * this.sqrt3);
- this.baseTriangle[3][0].y = this.baseTriangle[0][2].y;
- this.baseTriangle[3][1].x = (double)2.0F + (double)0.25F / this.sqrt3;
- this.baseTriangle[3][1].y = this.baseTriangle[0][1].y;
- this.baseTriangle[3][2].x = this.baseTriangle[3][1].x;
- this.baseTriangle[3][2].y = this.baseTriangle[0][0].y;
- this.baseRectangle[0][0].x = this.baseTriangle[0][2].x;
- this.baseRectangle[0][0].y = this.baseTriangle[0][2].y;
- this.baseRectangle[0][1].x = this.baseTriangle[1][1].x;
- this.baseRectangle[0][1].y = this.sqrt3;
- this.baseRectangle[0][2].x = this.baseTriangle[1][0].x;
- this.baseRectangle[0][2].y = this.sqrt3 + (double)0.125F;
- this.baseRectangle[0][3].x = this.baseTriangle[0][0].x;
- this.baseRectangle[0][3].y = this.baseTriangle[0][0].y;
- this.baseRectangle[1][0].x = this.baseTriangle[0][1].x;
- this.baseRectangle[1][0].y = this.baseTriangle[0][1].y;
- this.baseRectangle[1][1].x = this.baseTriangle[1][0].x;
- this.baseRectangle[1][1].y = this.baseTriangle[1][0].y;
- this.baseRectangle[1][2].x = this.baseTriangle[1][2].x;
- this.baseRectangle[1][2].y = this.baseTriangle[1][2].y;
- this.baseRectangle[1][3].x = this.baseTriangle[0][2].x;
- this.baseRectangle[1][3].y = this.baseTriangle[0][2].y;
- this.baseRectangle[2][0].x = this.baseTriangle[1][1].x;
- this.baseRectangle[2][0].y = this.baseTriangle[1][1].y;
- this.baseRectangle[2][1].x = this.baseTriangle[2][1].x;
- this.baseRectangle[2][1].y = this.baseTriangle[2][1].y;
- this.baseRectangle[2][2].x = this.baseTriangle[2][0].x;
- this.baseRectangle[2][2].y = this.baseTriangle[2][0].y;
- this.baseRectangle[2][3].x = this.baseTriangle[1][2].x;
- this.baseRectangle[2][3].y = this.baseTriangle[1][2].y;
- this.baseRectangle[3][0].x = this.baseTriangle[2][2].x;
- this.baseRectangle[3][0].y = this.baseTriangle[2][2].y;
- this.baseRectangle[3][1].x = this.baseTriangle[3][1].x;
- this.baseRectangle[3][1].y = this.baseTriangle[3][1].y;
- this.baseRectangle[3][2].x = this.baseTriangle[3][0].x;
- this.baseRectangle[3][2].y = this.baseTriangle[3][0].y;
- this.baseRectangle[3][3].x = this.baseTriangle[2][0].x;
- this.baseRectangle[3][3].y = this.baseTriangle[2][0].y;
- this.baseRectangle[4][0].x = this.baseTriangle[3][1].x;
- this.baseRectangle[4][0].y = this.baseTriangle[3][1].y;
- this.baseRectangle[4][1].x = this.baseTriangle[3][1].x + (this.baseTriangle[2][1].x - this.baseTriangle[1][1].x);
- this.baseRectangle[4][1].y = this.baseTriangle[3][1].y;
- this.baseRectangle[4][2].x = this.baseRectangle[4][1].x;
- this.baseRectangle[4][2].y = this.baseTriangle[3][2].y;
- this.baseRectangle[4][3].x = this.baseTriangle[3][2].x;
- this.baseRectangle[4][3].y = this.baseTriangle[3][2].y;
- this.baseRectangle[5][0].x = this.baseRectangle[0][1].x + (this.baseTriangle[2][1].x - this.baseTriangle[1][1].x);
- this.baseRectangle[5][0].y = this.baseRectangle[0][1].y;
- this.baseRectangle[5][1].x = this.baseTriangle[3][0].x;
- this.baseRectangle[5][1].y = this.baseTriangle[3][0].y;
- this.baseRectangle[5][2].x = this.baseTriangle[3][2].x;
- this.baseRectangle[5][2].y = this.baseTriangle[3][2].y;
- this.baseRectangle[5][3].x = this.baseRectangle[0][2].x + (this.baseTriangle[2][2].x - this.baseTriangle[1][0].x);
- this.baseRectangle[5][3].y = this.baseRectangle[0][2].y;
- this.rectangle[0][0].x = this.baseTriangle[1][1].x;
- this.rectangle[0][0].y = this.baseTriangle[1][1].y;
- this.rectangle[0][1].x = this.xMax - this.baseTriangle[1][1].x;
- this.rectangle[0][1].y = this.baseTriangle[1][1].y;
- this.rectangle[0][2].x = this.xMax - this.baseTriangle[1][2].x;
- this.rectangle[0][2].y = this.baseTriangle[1][2].y;
- this.rectangle[0][3].x = this.baseTriangle[1][2].x;
- this.rectangle[0][3].y = this.baseTriangle[1][2].y;
- this.rectangle[1][0].x = this.baseTriangle[0][1].x;
- this.rectangle[1][0].y = this.baseTriangle[0][1].y;
- this.rectangle[1][1].x = this.xMax - this.baseTriangle[0][1].x;
- this.rectangle[1][1].y = this.baseTriangle[0][1].y;
- this.rectangle[1][2].x = this.xMax - this.baseTriangle[1][2].x;
- this.rectangle[1][2].y = this.baseTriangle[1][2].y;
- this.rectangle[1][3].x = this.baseTriangle[1][2].x;
- this.rectangle[1][3].y = this.baseTriangle[1][2].y;
- this.rectangle[2][0].x = this.baseTriangle[0][1].x;
- this.rectangle[2][0].y = this.baseTriangle[0][1].y;
- this.rectangle[2][1].x = this.xMax - this.baseTriangle[0][1].x;
- this.rectangle[2][1].y = this.baseTriangle[0][1].y;
- this.rectangle[2][2].x = this.xMax - this.baseTriangle[0][0].x;
- this.rectangle[2][2].y = this.baseTriangle[0][0].y;
- this.rectangle[2][3].x = this.baseTriangle[0][0].x;
- this.rectangle[2][3].y = this.baseTriangle[0][0].y;
- this.rectangle[3][0].x = this.baseTriangle[0][0].x;
- this.rectangle[3][0].y = this.baseTriangle[0][0].y;
- this.rectangle[3][1].x = this.xMax - this.baseTriangle[0][0].x;
- this.rectangle[3][1].y = this.baseTriangle[0][0].y;
- this.rectangle[3][2].x = this.xMax - this.baseRectangle[0][1].x;
- this.rectangle[3][2].y = this.baseRectangle[0][1].y;
- this.rectangle[3][3].x = this.baseRectangle[0][1].x;
- this.rectangle[3][3].y = this.baseRectangle[0][1].y;
- this.field_1 = 0;
- this.state = 2;
- return;
- case 2:
- if (this.field_1 > this.maxY - 1) {
- this.rectangle[0][0].x = this.baseTriangle[1][0].x;
- this.rectangle[0][0].y = this.baseTriangle[1][0].y;
- this.rectangle[0][1].x = this.baseTriangle[1][1].x;
- this.rectangle[0][1].y = this.baseTriangle[1][1].y;
- this.rectangle[0][2].x = this.baseTriangle[2][1].x;
- this.rectangle[0][2].y = this.baseTriangle[2][1].y;
- this.rectangle[0][3].x = this.baseTriangle[2][2].x;
- this.rectangle[0][3].y = this.baseTriangle[2][2].y;
- this.rectangle[1][0].x = this.baseTriangle[0][1].x;
- this.rectangle[1][0].y = this.baseTriangle[0][1].y;
- this.rectangle[1][1].x = this.baseTriangle[1][0].x;
- this.rectangle[1][1].y = this.baseTriangle[1][0].y;
- this.rectangle[1][2].x = this.baseTriangle[2][2].x;
- this.rectangle[1][2].y = this.baseTriangle[2][2].y;
- this.rectangle[1][3].x = this.baseTriangle[3][1].x;
- this.rectangle[1][3].y = this.baseTriangle[3][1].y;
- this.rectangle[2][0].x = this.baseTriangle[0][0].x;
- this.rectangle[2][0].y = this.baseTriangle[0][0].y;
- this.rectangle[2][1].x = this.baseTriangle[0][1].x;
- this.rectangle[2][1].y = this.baseTriangle[0][1].y;
- this.rectangle[2][2].x = this.baseTriangle[3][1].x;
- this.rectangle[2][2].y = this.baseTriangle[3][1].y;
- this.rectangle[2][3].x = this.baseTriangle[3][2].x;
- this.rectangle[2][3].y = this.baseTriangle[3][2].y;
- this.field_0 = 0;
- this.state = 3;
- return;
- }
-
- if (this.field_1 > 0) {
- double var96 = this.rectangle[0][0].x;
- double var116 = this.rectangle[0][0].y;
- double var101 = this.rectangle[0][1].x;
- double var121 = this.rectangle[0][1].y;
- double var106 = this.rectangle[0][2].x;
- double var126 = this.rectangle[0][2].y;
- double var111 = this.rectangle[0][3].x;
- double var131 = this.rectangle[0][3].y;
- this.displayQuadrilateral(var96, var116, (double)0.0F, var101, var121, (double)0.0F, var106, var126, (double)0.0F, var111, var131, (double)0.0F, 6);
- var96 = this.rectangle[1][0].x;
- var116 = this.rectangle[1][0].y;
- var101 = this.rectangle[1][1].x;
- var121 = this.rectangle[1][1].y;
- var106 = this.rectangle[1][2].x;
- var126 = this.rectangle[1][2].y;
- var111 = this.rectangle[1][3].x;
- var131 = this.rectangle[1][3].y;
- this.displayQuadrilateral(var96, var116, (double)0.0F, var101, var121, (double)0.0F, var106, var126, (double)0.0F, var111, var131, (double)0.0F, 6);
- }
-
- double var98 = this.rectangle[2][0].x;
- double var118 = this.rectangle[2][0].y;
- double var103 = this.rectangle[2][1].x;
- double var123 = this.rectangle[2][1].y;
- double var108 = this.rectangle[2][2].x;
- double var128 = this.rectangle[2][2].y;
- double var113 = this.rectangle[2][3].x;
- double var133 = this.rectangle[2][3].y;
- this.displayQuadrilateral(var98, var118, (double)0.0F, var103, var123, (double)0.0F, var108, var128, (double)0.0F, var113, var133, (double)0.0F, 6);
- if (this.field_1 < this.maxY - 4) {
- var98 = this.rectangle[3][0].x;
- var118 = this.rectangle[3][0].y;
- var103 = this.rectangle[3][1].x;
- var123 = this.rectangle[3][1].y;
- var108 = this.rectangle[3][2].x;
- var128 = this.rectangle[3][2].y;
- var113 = this.rectangle[3][3].x;
- var133 = this.rectangle[3][3].y;
- this.displayQuadrilateral(var98, var118, (double)0.0F, var103, var123, (double)0.0F, var108, var128, (double)0.0F, var113, var133, (double)0.0F, 6);
- }
-
- for(int var57 = 0; var57 < 4; ++var57) {
- for(int var89 = 0; var89 < 4; ++var89) {
- zvertex var141 = this.rectangle[var57][var89];
- var141.y += this.sqrt3;
- }
- }
-
- this.field_1 += 4;
- return;
- case 3:
- if (this.field_0 > this.maxX) {
- this.yMod4 = 0;
- this.yOffset = (double)0.0F;
- this.field_1 = 0;
- this.state = 4;
- return;
- }
-
- for(int var56 = 0; var56 < 3; ++var56) {
- double var28 = this.rectangle[var56][0].x;
- double var36 = this.rectangle[var56][0].y;
- double var30 = this.rectangle[var56][1].x;
- double var38 = this.rectangle[var56][1].y;
- double var32 = this.rectangle[var56][2].x;
- double var40 = this.rectangle[var56][2].y;
- double var34 = this.rectangle[var56][3].x;
- double var42 = this.rectangle[var56][3].y;
- this.displayQuadrilateral(var28, var36, (double)0.0F, var30, var38, (double)0.0F, var32, var40, (double)0.0F, var34, var42, (double)0.0F, 6);
- var28 = this.rectangle[var56][0].x;
- var36 = this.yMax - this.rectangle[var56][0].y;
- var30 = this.rectangle[var56][1].x;
- var38 = this.yMax - this.rectangle[var56][1].y;
- var32 = this.rectangle[var56][2].x;
- var40 = this.yMax - this.rectangle[var56][2].y;
- var34 = this.rectangle[var56][3].x;
- var42 = this.yMax - this.rectangle[var56][3].y;
- this.displayQuadrilateral(var28, var36, (double)0.0F, var30, var38, (double)0.0F, var32, var40, (double)0.0F, var34, var42, (double)0.0F, 6);
-
- for(int var88 = 0; var88 < 4; ++var88) {
- zvertex var140 = this.rectangle[var56][var88];
- var140.x += (double)3.0F;
- }
- }
-
- this.field_0 += 8;
- return;
- case 4:
- if (this.field_1 > this.maxY) {
- this.state = 5;
- } else {
- switch (this.yMod4) {
- case 0:
- int var92 = 0;
-
- for(int var50 = 1; var50 <= 2; ++var50) {
- for(int var78 = 0; var78 < 3; ++var78) {
- var25[var50][var78].x = this.baseTriangle[var50][var78].x;
- var25[var50][var78].y = this.baseTriangle[var50][var78].y + this.yOffset;
- }
- }
-
- for(int var79 = 0; var79 < 4; ++var79) {
- this.rectangle[2][var79].x = this.baseRectangle[2][var79].x;
- this.rectangle[2][var79].y = this.baseRectangle[2][var79].y + this.yOffset;
- }
-
- for(this.field_0 = 0; this.field_0 <= this.maxX; ++this.field_0) {
- switch (var92) {
- case 2:
- var15[0].x = var25[1][0].x;
- var15[0].y = var25[1][0].y;
- var15[1].x = var25[1][1].x;
- var15[1].y = var25[1][1].y;
- var15[2].x = var25[1][2].x;
- var15[2].y = var25[1][2].y;
- this.outputTriangle(var15, true, 3);
- case 3:
- default:
- break;
- case 4:
- var15[0].x = var25[2][0].x;
- var15[0].y = var25[2][0].y;
- var15[1].x = var25[2][1].x;
- var15[1].y = var25[2][1].y;
- var15[2].x = var25[2][2].x;
- var15[2].y = var25[2][2].y;
- this.outputTriangle(var15, true, 9);
- }
-
- ++var92;
- if (var92 >= 8) {
- var92 = 0;
-
- for(int var51 = 1; var51 <= 2; ++var51) {
- for(int var80 = 0; var80 < 3; ++var80) {
- var25[var51][var80].x += (double)3.0F;
- }
- }
-
- for(int var81 = 0; var81 < 4; ++var81) {
- zvertex var137 = this.rectangle[2][var81];
- var137.x += (double)3.0F;
- }
- }
- }
-
- var92 = 0;
-
- for(int var52 = 1; var52 <= 2; ++var52) {
- for(int var82 = 0; var82 < 3; ++var82) {
- var25[var52][var82].x = this.baseTriangle[var52][var82].x;
- var25[var52][var82].y = this.baseTriangle[var52][var82].y + this.yOffset;
- }
- }
-
- for(int var83 = 0; var83 < 4; ++var83) {
- this.rectangle[2][var83].x = this.baseRectangle[2][var83].x;
- this.rectangle[2][var83].y = this.baseRectangle[2][var83].y + this.yOffset;
- }
-
- for(this.field_0 = 0; this.field_0 <= this.maxX; ++this.field_0) {
- switch (var92) {
- case 2:
- var15[0].x = var25[1][0].x;
- var15[0].y = var25[1][0].y;
- var15[1].x = var25[1][1].x;
- var15[1].y = var25[1][1].y;
- var15[2].x = var25[1][2].x;
- var15[2].y = var25[1][2].y;
- this.outputTriangle(var15, false, 8);
- break;
- case 3:
- if (this.computerPage[this.field_1][this.field_0] == 0) {
- var14[0].x = this.rectangle[2][0].x;
- var14[0].y = this.rectangle[2][0].y;
- var14[1].x = this.rectangle[2][1].x;
- var14[1].y = this.rectangle[2][1].y;
- var14[2].x = this.rectangle[2][2].x;
- var14[2].y = this.rectangle[2][2].y;
- var14[3].x = this.rectangle[2][3].x;
- var14[3].y = this.rectangle[2][3].y;
- this.outputRectangle(var14, 7);
- }
- break;
- case 4:
- var15[0].x = var25[2][0].x;
- var15[0].y = var25[2][0].y;
- var15[1].x = var25[2][1].x;
- var15[1].y = var25[2][1].y;
- var15[2].x = var25[2][2].x;
- var15[2].y = var25[2][2].y;
- this.outputTriangle(var15, false, 5);
- }
-
- ++var92;
- if (var92 >= 8) {
- var92 = 0;
-
- for(int var53 = 1; var53 <= 2; ++var53) {
- for(int var84 = 0; var84 < 3; ++var84) {
- var25[var53][var84].x += (double)3.0F;
- }
- }
-
- for(int var85 = 0; var85 < 4; ++var85) {
- zvertex var138 = this.rectangle[2][var85];
- var138.x += (double)3.0F;
- }
- }
- }
- break;
- case 1:
- int var91 = 0;
-
- for(int var48 = 1; var48 < 4; var48 += 2) {
- for(int var76 = 0; var76 < 4; ++var76) {
- this.rectangle[var48][var76].x = this.baseRectangle[var48][var76].x;
- this.rectangle[var48][var76].y = this.baseRectangle[var48][var76].y + this.yOffset;
- }
- }
-
- for(this.field_0 = 0; this.field_0 <= this.maxX; ++this.field_0) {
- switch (var91) {
- case 1:
- if (this.computerPage[this.field_1][this.field_0] == 0) {
- var14[0].x = this.rectangle[1][0].x;
- var14[0].y = this.rectangle[1][0].y;
- var14[1].x = this.rectangle[1][1].x;
- var14[1].y = this.rectangle[1][1].y;
- var14[2].x = this.rectangle[1][2].x;
- var14[2].y = this.rectangle[1][2].y;
- var14[3].x = this.rectangle[1][3].x;
- var14[3].y = this.rectangle[1][3].y;
- this.outputRectangle(var14, 4);
- }
- break;
- case 5:
- if (this.computerPage[this.field_1][this.field_0] == 0) {
- var14[0].x = this.rectangle[3][0].x;
- var14[0].y = this.rectangle[3][0].y;
- var14[1].x = this.rectangle[3][1].x;
- var14[1].y = this.rectangle[3][1].y;
- var14[2].x = this.rectangle[3][2].x;
- var14[2].y = this.rectangle[3][2].y;
- var14[3].x = this.rectangle[3][3].x;
- var14[3].y = this.rectangle[3][3].y;
- this.outputRectangle(var14, 10);
- }
- }
-
- ++var91;
- if (var91 >= 8) {
- var91 = 0;
-
- for(int var49 = 1; var49 < 4; var49 += 2) {
- for(int var77 = 0; var77 < 4; ++var77) {
- zvertex var136 = this.rectangle[var49][var77];
- var136.x += (double)3.0F;
- }
- }
- }
- }
- break;
- case 2:
- int var27 = 0;
-
- for(int var44 = 0; var44 < 4; var44 += 3) {
- for(int var68 = 0; var68 < 3; ++var68) {
- var25[var44][var68].x = this.baseTriangle[var44][var68].x;
- var25[var44][var68].y = this.baseTriangle[var44][var68].y + this.yOffset;
- }
- }
-
- for(int var69 = 0; var69 < 4; ++var69) {
- this.rectangle[4][var69].x = this.baseRectangle[4][var69].x;
- this.rectangle[4][var69].y = this.baseRectangle[4][var69].y + this.yOffset;
- }
-
- for(this.field_0 = 0; this.field_0 <= this.maxX; ++this.field_0) {
- switch (var27) {
- case 0:
- var15[0].x = var25[0][0].x;
- var15[0].y = var25[0][0].y;
- var15[1].x = var25[0][1].x;
- var15[1].y = var25[0][1].y;
- var15[2].x = var25[0][2].x;
- var15[2].y = var25[0][2].y;
- this.outputTriangle(var15, true, 3);
- break;
- case 6:
- var15[0].x = var25[3][0].x;
- var15[0].y = var25[3][0].y;
- var15[1].x = var25[3][1].x;
- var15[1].y = var25[3][1].y;
- var15[2].x = var25[3][2].x;
- var15[2].y = var25[3][2].y;
- this.outputTriangle(var15, true, 9);
- }
-
- ++var27;
- if (var27 >= 8) {
- var27 = 0;
-
- for(int var45 = 0; var45 < 4; var45 += 3) {
- for(int var70 = 0; var70 < 3; ++var70) {
- var25[var45][var70].x += (double)3.0F;
- }
- }
-
- for(int var71 = 0; var71 < 4; ++var71) {
- zvertex var10000 = this.rectangle[4][var71];
- var10000.x += (double)3.0F;
- }
- }
- }
-
- var27 = 0;
-
- for(int var46 = 0; var46 < 4; var46 += 3) {
- for(int var72 = 0; var72 < 3; ++var72) {
- var25[var46][var72].x = this.baseTriangle[var46][var72].x;
- var25[var46][var72].y = this.baseTriangle[var46][var72].y + this.yOffset;
- }
- }
-
- for(int var73 = 0; var73 < 4; ++var73) {
- this.rectangle[4][var73].x = this.baseRectangle[4][var73].x;
- this.rectangle[4][var73].y = this.baseRectangle[4][var73].y + this.yOffset;
- }
-
- for(this.field_0 = 0; this.field_0 <= this.maxX; ++this.field_0) {
- switch (var27) {
- case 0:
- var15[0].x = var25[0][0].x;
- var15[0].y = var25[0][0].y;
- var15[1].x = var25[0][1].x;
- var15[1].y = var25[0][1].y;
- var15[2].x = var25[0][2].x;
- var15[2].y = var25[0][2].y;
- this.outputTriangle(var15, false, 5);
- break;
- case 6:
- var15[0].x = var25[3][0].x;
- var15[0].y = var25[3][0].y;
- var15[1].x = var25[3][1].x;
- var15[1].y = var25[3][1].y;
- var15[2].x = var25[3][2].x;
- var15[2].y = var25[3][2].y;
- this.outputTriangle(var15, false, 8);
- break;
- case 7:
- if (this.computerPage[this.field_1][this.field_0] == 0) {
- var14[0].x = this.rectangle[4][0].x;
- var14[0].y = this.rectangle[4][0].y;
- var14[1].x = this.rectangle[4][1].x;
- var14[1].y = this.rectangle[4][1].y;
- var14[2].x = this.rectangle[4][2].x;
- var14[2].y = this.rectangle[4][2].y;
- var14[3].x = this.rectangle[4][3].x;
- var14[3].y = this.rectangle[4][3].y;
- this.outputRectangle(var14, 7);
- }
- }
-
- ++var27;
- if (var27 >= 8) {
- var27 = 0;
-
- for(int var47 = 0; var47 < 4; var47 += 3) {
- for(int var74 = 0; var74 < 3; ++var74) {
- var25[var47][var74].x += (double)3.0F;
- }
- }
-
- for(int var75 = 0; var75 < 4; ++var75) {
- zvertex var135 = this.rectangle[4][var75];
- var135.x += (double)3.0F;
- }
- }
- }
- break;
- default:
- int var94 = 0;
-
- for(int var54 = 0; var54 < 6; var54 += 5) {
- for(int var86 = 0; var86 < 4; ++var86) {
- this.rectangle[var54][var86].x = this.baseRectangle[var54][var86].x;
- this.rectangle[var54][var86].y = this.baseRectangle[var54][var86].y + this.yOffset;
- }
- }
-
- for(this.field_0 = 0; this.field_0 <= this.maxX; ++this.field_0) {
- switch (var94) {
- case 1:
- if (this.computerPage[this.field_1][this.field_0] == 0) {
- var14[0].x = this.rectangle[0][0].x;
- var14[0].y = this.rectangle[0][0].y;
- var14[1].x = this.rectangle[0][1].x;
- var14[1].y = this.rectangle[0][1].y;
- var14[2].x = this.rectangle[0][2].x;
- var14[2].y = this.rectangle[0][2].y;
- var14[3].x = this.rectangle[0][3].x;
- var14[3].y = this.rectangle[0][3].y;
- this.outputRectangle(var14, 10);
- }
- break;
- case 5:
- if (this.computerPage[this.field_1][this.field_0] == 0) {
- var14[0].x = this.rectangle[5][0].x;
- var14[0].y = this.rectangle[5][0].y;
- var14[1].x = this.rectangle[5][1].x;
- var14[1].y = this.rectangle[5][1].y;
- var14[2].x = this.rectangle[5][2].x;
- var14[2].y = this.rectangle[5][2].y;
- var14[3].x = this.rectangle[5][3].x;
- var14[3].y = this.rectangle[5][3].y;
- this.outputRectangle(var14, 4);
- }
- }
-
- ++var94;
- if (var94 >= 8) {
- var94 = 0;
-
- for(int var55 = 0; var55 < 6; var55 += 5) {
- for(int var87 = 0; var87 < 4; ++var87) {
- zvertex var139 = this.rectangle[var55][var87];
- var139.x += (double)3.0F;
- }
- }
- }
- }
- }
-
- if (++this.yMod4 >= 4) {
- this.yMod4 = 0;
- this.yOffset += this.sqrt3;
- }
-
- ++this.field_1;
- }
-
- if (this.state == 5) {
- this.alreadyPainting = false;
- this.hexDisplayUserMoves();
- if (this.solutionDisplayed) {
- this.hexDisplaySolution();
- return;
- }
- }
- }
-
- }
-
- public void sqrKey(int var1) {
- int var8 = 0;
- double var6 = (double)0.0F;
- double var9 = (double)0.0F;
- boolean var2 = true;
- int var5 = this.userX + this.sqrDeltaX[var1][0];
- if (var5 <= 0) {
- var2 = false;
- } else if (var5 >= this.maxX) {
- var2 = false;
- } else {
- var8 = this.userY + this.sqrDeltaY[var1][0];
- }
-
- if (var8 <= 0) {
- var2 = false;
- } else if (var8 > this.maxY) {
- var2 = false;
- } else if (this.userPage[var8][var5] == 0) {
- var2 = false;
- }
-
- if (var2) {
- var5 += this.sqrDeltaX[var1][0];
- var8 += this.sqrDeltaY[var1][0];
- if (var8 < this.maxY) {
- if (this.userPage[var8][var5] == 1) {
- this.graph.setColor(this.redGreenBlue[13]);
- this.userPage[this.userY][this.userX] = 3;
- } else {
- this.graph.setColor(this.redGreenBlue[14]);
- this.userPage[var8][var5] = 1;
- }
-
- double var3 = (double)this.sqrDeltaX[var1][0];
- var6 = this.userXRelative + var3;
- var3 = (double)this.sqrDeltaY[var1][0];
- var9 = this.userYRelative + var3;
- this.drawLine(this.userXRelative, this.userYRelative, var6, var9);
- } else {
- this.graph.setColor(this.redGreenBlue[14]);
- this.drawLine(this.userXRelative, this.userYRelative, this.userXRelative, this.yMax);
- this.userHasSolved = true;
- }
-
- this.userX = var5;
- this.userY = var8;
- this.userXRelative = var6;
- this.userYRelative = var9;
- }
-
- }
-
- public void sqrDisplayUserMoves() {
- double var7 = (double)0.0F;
- int var11 = 1;
-
- double var14;
- for(var14 = (double)0.625F; var11 < this.maxY; var11 += 2) {
- int var4 = 1;
-
- for(var7 = (double)0.625F; var4 < this.maxX; var4 += 2) {
- if (this.userPage[var11][var4] == 1 || this.userPage[var11][var4] == 3) {
- for(int var1 = 0; var1 < 4; ++var1) {
- int var5 = var4 + this.sqrDeltaX[var1][0];
- int var12 = var11 + this.sqrDeltaY[var1][0];
- if (this.userPage[var12][var5] != 0) {
- if (var12 == 0) {
- this.graph.setColor(this.redGreenBlue[14]);
- this.drawLine(var7, (double)0.125F, var7, var14);
- } else if (var12 == this.maxY) {
- if (this.userHasSolved) {
- this.graph.setColor(this.redGreenBlue[14]);
- this.drawLine(var7, var14, var7, this.yMax);
- }
- } else {
- int var6 = var5 + this.sqrDeltaX[var1][0];
- if (var6 > 0 && var6 < this.maxX) {
- int var13 = var12 + this.sqrDeltaY[var1][0];
- if (var13 > 0 && var13 < this.maxY && (this.userPage[var13][var6] == 1 || this.userPage[var13][var6] == 3)) {
- if (this.userPage[var11][var4] == this.userPage[var13][var6]) {
- if (this.userPage[var11][var4] == 1) {
- this.graph.setColor(this.redGreenBlue[14]);
- } else {
- this.graph.setColor(this.redGreenBlue[13]);
- }
- } else {
- this.graph.setColor(this.redGreenBlue[13]);
- }
-
- double var2 = (double)this.sqrDeltaX[var1][0];
- double var9 = var7 + var2 / (double)2.0F;
- var2 = (double)this.sqrDeltaY[var1][0];
- double var16 = var14 + var2 / (double)2.0F;
- this.drawLine(var7, var14, var9, var16);
- }
- }
- }
- }
- }
- }
-
- ++var7;
- }
-
- ++var14;
- }
-
- if (this.userHasSolved) {
- this.graph.setColor(this.redGreenBlue[14]);
- this.drawLine(var7, var14, var7, this.yMax);
- }
-
- }
-
- private void sqrSolveMaze() {
- this.numRoomsInSolution = 1;
- this.adjacency = 0;
- int var4 = 1;
- int var6 = 1;
- int var3 = -1;
- this.computerPage[var6][var4] = 1;
- int var7 = 0;
- int var5 = 0;
-
- label98:
- while(true) {
- int var8 = 0;
- boolean var2 = false;
-
- while(true) {
- while(var8 >= 4 || var2) {
- if (!var2) {
- var8 = this.stack[var3].index1;
- this.computerPage[var6][var4] = 2;
- var4 -= this.sqrDeltaX[var8][0];
- var6 -= this.sqrDeltaY[var8][0];
- this.computerPage[var6][var4] = 2;
- var4 -= this.sqrDeltaX[var8][0];
- var6 -= this.sqrDeltaY[var8][0];
- --var3;
- ++var8;
- }
-
- if (var2) {
- this.computerPage[var7][var5] = 1;
- var5 += this.sqrDeltaX[var8][0];
- var7 += this.sqrDeltaY[var8][0];
- if (var7 <= this.maxY) {
- ++var3;
- this.stack[var3].index1 = (short)var8;
- this.computerPage[var7][var5] = 1;
- var4 = var5;
- var6 = var7;
- }
-
- if (var7 >= this.maxY) {
- break label98;
- }
- continue label98;
- }
- }
-
- var5 = var4 + this.sqrDeltaX[var8][0];
- var7 = var6 + this.sqrDeltaY[var8][0];
- if (this.computerPage[var7][var5] == 2) {
- var2 = true;
- } else {
- ++var8;
- }
- }
- }
-
- var4 = this.maxX - 1;
- var6 = this.maxY - 1;
-
- for(this.adjacency = 0; var3 >= 0; ++this.numRoomsInSolution) {
- for(int var9 = 0; var9 < 4; ++var9) {
- var5 = var4 + this.sqrDeltaX[var9][0];
- var7 = var6 + this.sqrDeltaY[var9][0];
- if (this.computerPage[var7][var5] != 1 && this.computerPage[var7][var5] == 0) {
- var5 += this.sqrDeltaX[var9][0];
- var7 += this.sqrDeltaY[var9][0];
- if (var5 < 0) {
- ++this.adjacency;
- } else if (var5 > this.maxX) {
- ++this.adjacency;
- } else if (var7 < 0) {
- ++this.adjacency;
- } else if (var7 > this.maxY) {
- ++this.adjacency;
- } else if (this.computerPage[var7][var5] == 1) {
- ++this.adjacency;
- }
- }
- }
-
- var4 -= 2 * this.sqrDeltaX[this.stack[var3].index1][0];
- var6 -= 2 * this.sqrDeltaY[this.stack[var3--].index1][0];
- }
-
- for(int var10 = 0; var10 < 4; ++var10) {
- var5 = var4 + this.sqrDeltaX[var10][0];
- var7 = var4 + this.sqrDeltaY[var10][0];
- if (this.computerPage[var7][var5] != 2 && this.computerPage[var7][var5] == 0) {
- var5 += this.sqrDeltaX[var10][0];
- var7 += this.sqrDeltaY[var10][0];
- if (var5 < 0) {
- ++this.adjacency;
- } else if (var5 > this.maxX) {
- ++this.adjacency;
- } else if (var7 < 0) {
- ++this.adjacency;
- } else if (var7 > this.maxY) {
- ++this.adjacency;
- } else if (this.computerPage[var7][var5] == 1) {
- ++this.adjacency;
- }
- }
- }
-
- }
-
- private void sqrGenerateMaze(int[] var1) {
- int var17 = 0;
- int var15 = 0;
- int[] var7 = new int[]{var1[0] + 1, var1[1] + 1, var1[2] + 1, var1[3] + 1, var1[4] + 1, var1[5] + 1, var1[6] + 1, var1[7] + 1};
-
- for(int var16 = 0; var16 <= this.maxY; ++var16) {
- for(int var14 = 0; var14 <= this.maxX; ++var14) {
- this.computerPage[var16][var14] = 0;
- }
- }
-
- int var12 = 0;
-
- for(int var5 = 1; var5 <= 3; ++var5) {
- int var4 = var7[0];
- int var8 = 0;
-
- for(int var9 = 1; var9 < 8; var8 = var9++) {
- int var13 = var7[var9];
- var7[var8] = var13;
- var4 += var13;
- if (var4 >= 29) {
- var4 -= 29;
- }
- }
-
- var7[7] = var4;
- var12 = 29 * var12 + var4;
- }
-
- int var28 = 2 * (var12 % this.numColumns) + 1;
- var12 = 0;
-
- for(int var20 = 1; var20 <= 3; ++var20) {
- int var19 = var7[0];
- int var21 = 0;
-
- for(int var23 = 1; var23 < 8; var21 = var23++) {
- int var26 = var7[var23];
- var7[var21] = var26;
- var19 += var26;
- if (var19 >= 29) {
- var19 -= 29;
- }
- }
-
- var7[7] = var19;
- var12 = 29 * var12 + var19;
- }
-
- int var29 = 2 * (var12 % this.numRows) + 1;
- this.computerPage[var29][var28] = 2;
- int var11 = -1;
-
- do {
- int var18 = 0;
-
- int var3;
- do {
- var3 = var7[0];
- int var22 = 0;
-
- for(int var24 = 1; var24 < 8; var22 = var24++) {
- int var27 = var7[var24];
- var7[var22] = var27;
- var3 += var27;
- if (var3 >= 29) {
- var3 -= 29;
- }
- }
-
- var7[7] = var3;
- } while(var3 >= 24);
-
- boolean var6 = false;
-
- for(boolean var10 = false; !var10; var10 = var6 || var11 == -1 && var18 >= 4) {
- while(var18 < 4 && !var6) {
- var15 = var28 + 2 * this.sqrDeltaX[var18][var3];
- if (var15 <= 0) {
- ++var18;
- } else if (var15 > this.maxX) {
- ++var18;
- } else {
- var17 = var29 + 2 * this.sqrDeltaY[var18][var3];
- if (var17 <= 0) {
- ++var18;
- } else if (var17 > this.maxY) {
- ++var18;
- } else if (this.computerPage[var17][var15] == 0) {
- var6 = true;
- } else {
- ++var18;
- }
- }
- }
-
- if (!var6 && var11 >= 0) {
- var18 = this.stack[var11].index1;
- var3 = this.stack[var11--].index2;
- var28 -= 2 * this.sqrDeltaX[var18][var3];
- var29 -= 2 * this.sqrDeltaY[var18++][var3];
- }
- }
-
- if (var6) {
- ++var11;
- this.stack[var11].index1 = (short)var18;
- this.stack[var11].index2 = (short)var3;
- this.computerPage[var17][var15] = 2;
- this.computerPage[(var29 + var17) / 2][(var28 + var15) / 2] = 2;
- var28 = var15;
- var29 = var17;
- }
- } while(var11 != -1);
-
- this.computerPage[0][1] = 1;
- this.computerPage[this.maxY][this.maxX - 1] = 2;
- }
-
- private void sqrSelectMaze() {
- byte var1 = 0;
- byte var14 = 0;
- int[] var16 = new int[8];
- int[] var17 = new int[8];
- int var2 = this.seed[0];
- int var3 = this.seed[1];
- int var4 = this.seed[2];
- int var5 = this.seed[3];
- int var6 = this.seed[4];
- int var7 = this.seed[5];
- int var8 = this.seed[6];
- int var9 = this.seed[7];
- this.hash();
- int var13 = 2 * this.numRoomsInMaze + 1;
- byte var15 = 0;
- var17[0] = var2;
- var17[1] = var3;
- var17[2] = var4;
- var17[3] = var5;
- var17[4] = var6;
- var17[5] = var7;
- var17[6] = var8;
- var17[7] = var9;
- Date var10 = new Date();
- double var18 = (double)var10.getTime() / (double)1000.0F;
-
- double var11;
- do {
- var16[0] = var2;
- var16[1] = var3;
- var16[2] = var4;
- var16[3] = var5;
- var16[4] = var6;
- var16[5] = var7;
- var16[6] = var8;
- var16[7] = var9;
- this.sqrGenerateMaze(var16);
- this.sqrSolveMaze();
- if (3 * var14 >= this.numRoomsInMaze) {
- if (var1 < var13) {
- var13 = var1;
- var15 = var14;
- var17[0] = var16[0];
- var17[1] = var16[1];
- var17[2] = var16[2];
- var17[3] = var16[3];
- var17[4] = var16[4];
- var17[5] = var16[5];
- var17[6] = var16[6];
- var17[7] = var16[7];
- } else if (var1 == var13 && var14 > var15) {
- var15 = var14;
- var17[0] = var16[0];
- var17[1] = var16[1];
- var17[2] = var16[2];
- var17[3] = var16[3];
- var17[4] = var16[4];
- var17[5] = var16[5];
- var17[6] = var16[6];
- var17[7] = var16[7];
- }
- }
-
- this.increment();
- var10 = new Date();
- var11 = (double)var10.getTime() / (double)1000.0F - var18;
- } while(var11 >= (double)0.0F && var11 < (double)0.25F);
-
- this.sqrGenerateMaze(var17);
- this.sqrSolveMaze();
- }
-
- public void sqrDisplaySolution() {
- double var8 = (double)0.625F;
- double var15 = (double)0.625F;
- double var10 = (double)0.0F;
- double var17 = (double)0.0F;
- this.graph.setColor(this.redGreenBlue[15]);
- this.drawLine(var8, (double)0.125F, var8, var15);
- int var7 = 1;
- int var14 = -1;
- int var5 = 1;
- int var12 = 1;
- int var6 = 0;
- int var13 = 0;
-
- do {
- boolean var2 = false;
- int var1 = 0;
-
- while(!var2) {
- var6 = var5 + this.sqrDeltaX[var1][0];
- var13 = var12 + this.sqrDeltaY[var1][0];
- if (this.computerPage[var13][var6] == 1) {
- var6 += this.sqrDeltaX[var1][0];
- var13 += this.sqrDeltaY[var1][0];
- if (var6 == var7 && var13 == var14) {
- ++var1;
- } else {
- var2 = true;
- }
- } else {
- ++var1;
- }
- }
-
- if (var13 < this.maxY) {
- double var3 = (double)this.sqrDeltaX[var1][0];
- var10 = var8 + var3;
- var3 = (double)this.sqrDeltaY[var1][0];
- var17 = var15 + var3;
- this.drawLine(var8, var15, var10, var17);
- } else {
- this.drawLine(var8, var15, var8, this.yMax);
- }
-
- var7 = var5;
- var14 = var12;
- var5 = var6;
- var12 = var13;
- var8 = var10;
- var15 = var17;
- } while(var13 < this.maxY);
-
- }
-
- private void sqrOutputMaze() {
- zvertex[] var13 = new zvertex[4];
-
- for(int var21 = 0; var21 < 4; ++var21) {
- var13[var21] = new zvertex();
- }
-
- switch (this.state) {
- case 0:
- if (this.resize) {
- this.seed = new int[8];
- Date var20 = new Date();
- long var4 = var20.getTime();
-
- for(int var3 = 0; var3 < 8; ++var3) {
- long var6 = var4 / 10L;
- this.seed[var3] = (int)(var4 - 10L * var6);
- var4 = var6;
- }
-
- double var14 = (double)this.screen.width * 0.28;
- double var16 = (double)0.25F;
- var16 *= 25.4;
- double var18 = (double)0.25F;
- this.numColumns = (int)(var14 / var16 - var18);
- if (this.numColumns < 2) {
- this.numColumns = 2;
- }
-
- var14 = (double)this.screen.height * 0.28;
- var16 = (double)this.screen.width * 0.28;
- var18 = (double)this.numColumns;
- this.numRows = (int)(var14 * var18 / var16);
- if (this.numRows < 2) {
- this.numRows = 2;
- }
-
- this.maxX = 2 * this.numColumns;
- this.maxY = 2 * this.numRows;
- this.numRoomsInMaze = this.numRows * this.numColumns;
- this.computerPage = new char[this.maxY + 1][this.maxX + 1];
- this.userPage = new char[this.maxY + 1][this.maxX + 1];
- this.clearUserAttempts = true;
- this.stack = new zstack[this.numRoomsInMaze];
-
- for(int var12 = 0; var12 < this.numRoomsInMaze; ++var12) {
- this.stack[var12] = new zstack();
- }
-
- this.sqrSelectMaze();
- this.resize = false;
- }
-
- if (this.clearUserAttempts) {
- for(this.userX = 0; this.userX <= this.maxX; ++this.userX) {
- for(this.userY = 0; this.userY <= this.maxY; ++this.userY) {
- if (this.computerPage[this.userY][this.userX] == 0) {
- this.userPage[this.userY][this.userX] = 0;
- } else {
- this.userPage[this.userY][this.userX] = 2;
- }
- }
- }
-
- this.userX = 1;
- this.userXRelative = (double)0.625F;
- this.userY = 1;
- this.userYRelative = (double)0.625F;
- this.userPage[this.userY][this.userX] = 1;
- this.clearUserAttempts = false;
- }
-
- if (this.paint) {
- int[] var1 = new int[4];
- int[] var2 = new int[4];
- var1[0] = 0;
- var2[0] = 0;
- var1[1] = 0;
- var2[1] = this.screen.height;
- var1[2] = this.screen.width;
- var2[2] = this.screen.height;
- var1[3] = this.screen.width;
- var2[3] = 0;
- this.graph.setColor(new Color(255, 255, 255));
- this.graph.fillPolygon(var1, var2, 4);
- double var10 = Math.atan((double)1.0F) / (double)45.0F;
- double var8 = this.tilt * var10;
- this.sinTilt = Math.sin(var8);
- this.cosTilt = Math.cos(var8);
- double var39 = (double)this.numColumns;
- this.xMax = var39 + (double)0.25F;
- var39 = (double)this.screen.width;
- this.pixelsPerX = (var39 - (double)1.0F) / (this.xMax * (this.xMax / (this.xMax - (double)2.0F)));
- this.xOffset = this.xMax / (double)2.0F * ((double)2.0F / (this.xMax - (double)2.0F));
- var39 = (double)this.numRows;
- this.yMax = var39 + (double)0.25F;
- var39 = (double)this.screen.height;
- this.pixelsPerZ = (var39 - (double)1.0F) / Math.sqrt(this.yMax * this.yMax + (double)4.0F);
- if (this.yMax > this.xMax) {
- this.relDistOfUserFromScreen = this.yMax;
- } else {
- this.relDistOfUserFromScreen = this.xMax;
- }
-
- this.paint = false;
- }
-
- if (this.state == 0) {
- this.state = 1;
- return;
- }
- break;
- case 1:
- this.baseRectangle[0][0].x = (double)0.0F;
- this.baseRectangle[0][0].y = (double)0.0F;
- this.baseRectangle[0][1].x = (double)0.25F;
- this.baseRectangle[0][1].y = (double)0.0F;
- this.baseRectangle[0][2].x = (double)0.25F;
- this.baseRectangle[0][2].y = (double)0.25F;
- this.baseRectangle[0][3].x = (double)0.0F;
- this.baseRectangle[0][3].y = (double)0.25F;
- this.baseRectangle[1][0].x = (double)0.25F;
- this.baseRectangle[1][0].y = (double)0.0F;
- this.baseRectangle[1][1].x = (double)1.0F;
- this.baseRectangle[1][1].y = (double)0.0F;
- this.baseRectangle[1][2].x = (double)1.0F;
- this.baseRectangle[1][2].y = (double)0.25F;
- this.baseRectangle[1][3].x = (double)0.25F;
- this.baseRectangle[1][3].y = (double)0.25F;
- this.baseRectangle[2][0].x = (double)0.25F;
- this.baseRectangle[2][0].y = (double)0.25F;
- this.baseRectangle[2][1].x = (double)1.0F;
- this.baseRectangle[2][1].y = (double)0.25F;
- this.baseRectangle[2][2].x = (double)1.0F;
- this.baseRectangle[2][2].y = (double)1.0F;
- this.baseRectangle[2][3].x = (double)0.25F;
- this.baseRectangle[2][3].y = (double)1.0F;
- this.baseRectangle[3][0].x = (double)0.0F;
- this.baseRectangle[3][0].y = (double)0.25F;
- this.baseRectangle[3][1].x = (double)0.25F;
- this.baseRectangle[3][1].y = (double)0.25F;
- this.baseRectangle[3][2].x = (double)0.25F;
- this.baseRectangle[3][2].y = (double)1.0F;
- this.baseRectangle[3][3].x = (double)0.0F;
- this.baseRectangle[3][3].y = (double)1.0F;
- this.rectangle[0][0].x = (double)0.0F;
- this.rectangle[0][0].y = (double)0.0F;
- this.rectangle[0][1].x = this.xMax;
- this.rectangle[0][1].y = (double)0.0F;
- this.rectangle[0][2].x = this.xMax;
- this.rectangle[0][2].y = this.yMax;
- this.rectangle[0][3].x = (double)0.0F;
- this.rectangle[0][3].y = this.yMax;
- double var22 = this.rectangle[0][0].x;
- double var30 = this.rectangle[0][0].y;
- double var24 = this.rectangle[0][1].x;
- double var32 = this.rectangle[0][1].y;
- double var26 = this.rectangle[0][2].x;
- double var34 = this.rectangle[0][2].y;
- double var28 = this.rectangle[0][3].x;
- double var36 = this.rectangle[0][3].y;
- this.displayQuadrilateral(var22, var30, (double)0.0F, var24, var32, (double)0.0F, var26, var34, (double)0.0F, var28, var36, (double)0.0F, 6);
- this.field_1 = 0;
- this.yOffset = (double)0.0F;
- this.state = 4;
- return;
- case 4:
- if (this.field_1 > this.maxY) {
- this.state = 5;
- } else {
- for(int var46 = 0; var46 < 4; ++var46) {
- this.rectangle[0][var46].x = this.baseRectangle[0][var46].x;
- this.rectangle[0][var46].y = this.baseRectangle[0][var46].y + this.yOffset;
- }
-
- for(this.field_0 = 0; this.field_0 <= this.maxX; this.field_0 += 2) {
- if (this.computerPage[this.field_1][this.field_0] == 0) {
- var13[0].x = this.rectangle[0][0].x;
- var13[0].y = this.rectangle[0][0].y;
- var13[1].x = this.rectangle[0][1].x;
- var13[1].y = this.rectangle[0][1].y;
- var13[2].x = this.rectangle[0][2].x;
- var13[2].y = this.rectangle[0][2].y;
- var13[3].x = this.rectangle[0][3].x;
- var13[3].y = this.rectangle[0][3].y;
- this.outputLeftRight(var13);
- }
-
- for(int var47 = 0; var47 < 4; ++var47) {
- ++this.rectangle[0][var47].x;
- }
- }
-
- for(int var48 = 0; var48 < 4; ++var48) {
- this.rectangle[0][var48].x = this.baseRectangle[0][var48].x;
- this.rectangle[0][var48].y = this.baseRectangle[0][var48].y + this.yOffset;
- }
-
- for(int var49 = 0; var49 < 4; ++var49) {
- this.rectangle[1][var49].x = this.baseRectangle[1][var49].x;
- this.rectangle[1][var49].y = this.baseRectangle[1][var49].y + this.yOffset;
- }
-
- this.field_0 = 0;
-
- while(this.field_0 <= this.maxX) {
- if (this.computerPage[this.field_1][this.field_0] == 0) {
- var13[0].x = this.rectangle[0][0].x;
- var13[0].y = this.rectangle[0][0].y;
- var13[1].x = this.rectangle[0][1].x;
- var13[1].y = this.rectangle[0][1].y;
- var13[2].x = this.rectangle[0][2].x;
- var13[2].y = this.rectangle[0][2].y;
- var13[3].x = this.rectangle[0][3].x;
- var13[3].y = this.rectangle[0][3].y;
- this.outputRectangle(var13, 7);
- }
-
- for(int var50 = 0; var50 < 4; ++var50) {
- ++this.rectangle[0][var50].x;
- }
-
- ++this.field_0;
- if (this.field_0 <= this.maxX) {
- if (this.computerPage[this.field_1][this.field_0] == 0) {
- var13[0].x = this.rectangle[1][0].x;
- var13[0].y = this.rectangle[1][0].y;
- var13[1].x = this.rectangle[1][1].x;
- var13[1].y = this.rectangle[1][1].y;
- var13[2].x = this.rectangle[1][2].x;
- var13[2].y = this.rectangle[1][2].y;
- var13[3].x = this.rectangle[1][3].x;
- var13[3].y = this.rectangle[1][3].y;
- this.outputRectangle(var13, 7);
- }
-
- for(int var51 = 0; var51 < 4; ++var51) {
- ++this.rectangle[1][var51].x;
- }
-
- ++this.field_0;
- }
- }
-
- ++this.field_1;
- if (this.field_1 <= this.maxY) {
- for(int var52 = 0; var52 < 4; ++var52) {
- this.rectangle[3][var52].x = this.baseRectangle[3][var52].x;
- this.rectangle[3][var52].y = this.baseRectangle[3][var52].y + this.yOffset;
- }
-
- for(this.field_0 = 0; this.field_0 <= this.maxX; this.field_0 += 2) {
- if (this.computerPage[this.field_1][this.field_0] == 0) {
- var13[0].x = this.rectangle[3][0].x;
- var13[0].y = this.rectangle[3][0].y;
- var13[1].x = this.rectangle[3][1].x;
- var13[1].y = this.rectangle[3][1].y;
- var13[2].x = this.rectangle[3][2].x;
- var13[2].y = this.rectangle[3][2].y;
- var13[3].x = this.rectangle[3][3].x;
- var13[3].y = this.rectangle[3][3].y;
- this.outputLeftRight(var13);
- }
-
- for(int var53 = 0; var53 < 4; ++var53) {
- ++this.rectangle[3][var53].x;
- }
- }
-
- for(int var54 = 0; var54 < 4; ++var54) {
- this.rectangle[3][var54].x = this.baseRectangle[3][var54].x;
- this.rectangle[3][var54].y = this.baseRectangle[3][var54].y + this.yOffset;
- }
-
- for(this.field_0 = 0; this.field_0 <= this.maxX; this.field_0 += 2) {
- if (this.computerPage[this.field_1][this.field_0] == 0) {
- var13[0].x = this.rectangle[3][0].x;
- var13[0].y = this.rectangle[3][0].y;
- var13[1].x = this.rectangle[3][1].x;
- var13[1].y = this.rectangle[3][1].y;
- var13[2].x = this.rectangle[3][2].x;
- var13[2].y = this.rectangle[3][2].y;
- var13[3].x = this.rectangle[3][3].x;
- var13[3].y = this.rectangle[3][3].y;
- this.outputRectangle(var13, 7);
- }
-
- for(int var55 = 0; var55 < 4; ++var55) {
- ++this.rectangle[3][var55].x;
- }
- }
-
- ++this.field_1;
- }
-
- ++this.yOffset;
- }
-
- if (this.state == 5) {
- this.alreadyPainting = false;
- this.sqrDisplayUserMoves();
- if (this.solutionDisplayed) {
- this.sqrDisplaySolution();
- return;
- }
- }
- }
-
- }
-
- public void run() {
- do {
- if (this.state < 5) {
- if (this.hexagonalRooms) {
- this.hexOutputMaze();
- } else {
- this.sqrOutputMaze();
- }
- }
-
- Thread.yield();
- if (this.restart) {
- this.restart = false;
- this.graph = this.zmazecan.getGraphics().create();
- this.screen = new Rectangle(this.zmazecan.rectangle.x, this.zmazecan.rectangle.y, this.zmazecan.rectangle.width, this.zmazecan.rectangle.height);
- this.resize = this.zmazecan.resize;
- if (this.resize) {
- this.userHasSolved = false;
- }
-
- this.hexagonalRooms = this.zmazecan.zmaze3d.hexagonalRooms;
- this.solutionDisplayed = this.zmazecan.zmaze3d.solutionDisplayed;
- if (this.zmazecan.zmaze3d.clearUserAttempts) {
- this.clearUserAttempts = true;
- this.zmazecan.zmaze3d.clearUserAttempts = false;
- this.userHasSolved = false;
- }
-
- this.tilt = this.zmazecan.zmaze3d.tilt;
- this.paint = true;
- this.alreadyPainting = true;
- this.state = 0;
- }
- } while(this.state < 6);
-
- }
- }
-